/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package facade;

import authentification.Exception.AuthException;
import authentification.dao.DaoUserAuthLocal;
import authentification.entitie.UserAuth;
import authentification.service.SrvAuthentification;
import dao.proposition.DaoPropositionLocal;
import dao.question.DaoAbstractQuestionLocal;
import dao.questionnaire.DaoApparenceLocal;
import dao.questionnaire.DaoQuestionnaireLocal;
import dao.reponse.DaoAbstractReponseLocal;
import dao.utilisateur.DaoAbstractUtilisateurLocal;
import dao.utilisateur.DaoCreateurLocal;
import dao.utilisateur.DaoRepondantAuthentifieLocal;
import entities.Proposition;
import entities.question.AbstractQuestion;
import entities.questionnaire.Apparence;
import entities.questionnaire.Questionnaire;
import entities.utilisateur.AbstractRepondant;
import entities.utilisateur.AbstractUtilisateur;
import entities.utilisateur.Createur;
import entities.utilisateur.RepondantAuthentifie;
import entities.utilisateur.Valideur;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import services.SrvGestionQuestionnaireLocal;

/**
 * Cette classe est l implementation de l interface AdministrationFacadeLocal
 * @author aurelien.emery
 */
@Stateless
public class AdministrationFacade implements AdministrationFacadeLocal {

    @EJB
    private DaoQuestionnaireLocal daoQuestionnaire;

    @EJB
    private DaoAbstractQuestionLocal daoQuestion;

    @EJB
    private DaoApparenceLocal daoApparence;

    @EJB
    private DaoPropositionLocal daoProposition;

    @EJB
    private DaoAbstractUtilisateurLocal daoUtilisateur;

    @EJB
    private DaoRepondantAuthentifieLocal daoRepondant;

    @EJB
    private DaoAbstractReponseLocal daoReponse;

    @EJB
    private DaoCreateurLocal daoCreateur;

    @EJB
    private SrvGestionQuestionnaireLocal ejbService;

    @EJB
    private SrvAuthentification ejbAuth;

    @Override
    public void createQuestionnaire(Questionnaire questionnaire) {
        daoQuestionnaire.create(questionnaire);
    }

    @Override
    public void createQuestion(AbstractQuestion question) {
        daoQuestion.create(question);
    }

    @Override
    public void createProposition(Proposition proposition) {
        daoProposition.create(proposition);
    }

    @Override
    public void editQuestionnaire(Questionnaire questionnaire) {
        daoQuestionnaire.edit(questionnaire);
    }

    @Override
    public void editQuestion(AbstractQuestion question) {
        daoQuestion.edit(question);
    }

    @Override
    public AbstractQuestion findQuestion(Long id) {
       return daoQuestion.find(id);
    }

    @Override
    public Apparence findApparence(Long id) {
        return daoApparence.find(id);
    }

    @Override
    public Proposition findProposition(Long id) {
        return daoProposition.find(id);
    }

    @Override
    public Questionnaire findQuestionnaire(Long id) {
        return daoQuestionnaire.find(id);
    }

    @Override
    public AbstractUtilisateur findUtilisateur(Long id) {
        return daoUtilisateur.find(id);
    }

    @Override
    public Createur findCreateur(String login) {
        return daoCreateur.findByLogin(login);
    }

    @Override
    public List<Apparence> findAllApparence() {
        return daoApparence.findAll();
    }

    @Override
    public List<Proposition> findAllProposition() {
        return daoProposition.findAll();
    }

    @Override
    public List<AbstractQuestion> findAllQuestion() {
       return daoQuestion.findAll();
    }

    @Override
    public List<Questionnaire> findAllQuestionnaire() {
        return daoQuestionnaire.findAll();
    }

    @Override
    public List<Questionnaire> findAllQuestionnaireDispo(AbstractRepondant repondant) {
        return daoQuestionnaire.chercherQuestionnaireDispo(repondant);
    }

    @Override
    public List<AbstractUtilisateur> findAllUtilisateur() {
        return daoUtilisateur.findAll();
    }

    @Override
    public List<RepondantAuthentifie> findAllRepondant() {
        return daoRepondant.findAll();
    }

    @Override
    public List<Createur> findAllCreateur() {
        return daoCreateur.findAll();
    }

    @Override
    public int countQuestionnaire() {
        return daoQuestionnaire.count();
    }

    @Override
    public int countQuestion() {
        return daoQuestion.count();

    }

    @Override
    public long countRepondant(Questionnaire questionnnaire) {
        return daoReponse.countAllByQuestionnaire(questionnnaire);

    }

    @Override
    public List<Questionnaire> findQuestionnaireRange(int[] range) {
        return daoQuestionnaire.findRange(range);
    }

    @Override
    public List<Questionnaire> findQuestionnaireDispoRange(AbstractRepondant repondant, int[] range) {
        return daoQuestionnaire.chercherQuestionnaireDispoRange(repondant, range);
    }

    @Override
    public long getLastIdQuestionnaire() {
        return daoQuestionnaire.getLastIdQuestionnaire();
    }

    @Override
    public long getLastIdQuestion() {
        return daoQuestion.getLastIdQuestion();
    }

    @Override
    public void valider(Questionnaire q, Valideur v) {
        daoQuestionnaire.valide(q, v);
    }

    @Override
    public void diffuser(Questionnaire q) {
        q.setDateDiffusion(Calendar.getInstance());
        ejbService.diffuser(q);
    }

    @Override
    public void relancerDiffusion(Questionnaire q) {
        ejbService.relancerDiffusion(q);
    }

    @Override
    public UserAuth validerUser(String login, String mdp) throws AuthException {
        return ejbAuth.validUser(login, mdp);
    }
    
    
 
}
